//首先想到要用到什么依赖
//express mongoose 用npm下载
const express = require("express");
const mongoose = require("mongoose");
const app = express()
const bodyParser = require("body-parser")
const compression = require('compression')

app.use(compression()) //gzip

//配置
                    //true使用qs模块处理 false则用node系统模块querystring


//跨域
app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Headers', 'Content-type');
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS,PATCH");
  res.header('Access-Control-Max-Age',1728000);//预请求缓存20天
  next();  
});

//连接数据库
mongoose.connect("mongodb://localhost/plmm", {
  useUnifiedTopology: true,
  useNewUrlParser: true
})
  .then(res => {
    console.log("连接plmm数据库成功");
  }).catch(err => {
    console.log("连接数据库失败", err);
  })

//创建集合并应用规则			  //集合名，最好写为大写，但是数据库实际的名字是courses
const User = mongoose.model("User", new mongoose.Schema({
  name: {
    type: String,
    required: true,
    trim:true,
  },
  date:{
    type:String,
    required:true,
    trim:true,
  },
  msg:{
    type:String,
    required:true,
    trim:true,
  }
}));
//返回的是这个集合的构造函数

app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())

app.post("/user",async (req,res)=>{
  const data = await User.find().limit(100).sort("-date")
  res.send(data)
})

app.post("/sub", (req,res)=>{
  User.create(req.body)
    .then((res)=>{
      res.send("添加成功")
    })
    .catch(err=>{
      res.send(err)
    })
  
})

// User.create({
//   name:"mong",
//   msg:"倒掉电脑代码泼德谟安排",
//   date:"2020-8-19 17:35"
// })
//   .then((res)=>{
//     console.log(res,"添加成功");
//   })
//   .catch((err)=>{
//     console.log(err,"添加失败");
//   })


app.get("/", (req, res) => {
  res.send("ok")
})



// 如果没有路径处理就返回 Not Found
app.use(function (req, res, next) {
  res.send('Not Found')
})

app.listen(3000, () => {
  console.log("ok");
})




